package com.jch.helloworld.configBeans.BeanRelation;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestDemo {

    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("/beans/beans-relation.xml");
//        System.out.println("获取demo0：(该bean可以作为父bean，也可以实例化)");
//        BeanDemo0 beanDemo0 = (BeanDemo0) ctx.getBean("demo0");
//        System.out.println(beanDemo0);
//        System.out.println("获取demo1：(该bean的abstract属性为true，只能作为配置模板，不能实例化)");
//        BeanDemo1 beanDemo1 = (BeanDemo1) ctx.getBean("demo1");
//        System.out.println(beanDemo1);
//        System.out.println("获取demo2：(该bean继承demo0的配置)");
//        BeanDemo0 demo2 = (BeanDemo0) ctx.getBean("demo2");
//        System.out.println(demo2);
//        System.out.println("获取demo3：(该bean继承demo1的配置，并覆盖父bean的部分属性)");
//        BeanDemo1 demo3 = (BeanDemo1) ctx.getBean("demo3");
//        System.out.println(demo3);
//        System.out.println("获取demo3c：(该bean继承demo3f的配置，父bean并未指定class属性)");
//        BeanDemo2 demo3c = (BeanDemo2) ctx.getBean("demo3c");
//        System.out.println(demo3c);
        System.out.println("获取demoZ：(该bean继承demo3c的配置，前置依赖于demo0 demo2 demo3)");
        BeanDemo2 demoZ = (BeanDemo2) ctx.getBean("demoZ");
        System.out.println(demoZ);
    }
}
